package network;

import java.io.IOException;
import java.net.*;
import java.util.Arrays;
import java.util.Scanner;

public class UdpEchoClient {
private DatagramSocket socket = null;
private String serverIP;
private int serverPort;

public UdpEchoClient(String serverIP, int serverPort) throws SocketException {
socket = new DatagramSocket();
this.serverIP = serverIP;
this.serverPort = serverPort;
}


    public void start() throws IOException {
        System.out.println("启动客户端");
        Scanner scanner = new Scanner(System.in);

        while (true) {
// 1. 从控制台读取到用户的输入.
            System.out.print("-> ");
            String request = scanner.next();
// 2. 构造出一个 UDP 请求, 发送给服务器.
            DatagramPacket requestPacket = new DatagramPacket(request.getBytes(), request.getBytes().length,
                    InetAddress.getByName(this.serverIP), this.serverPort);
            socket.send(requestPacket);
// 3. 从服务器读取到响应
            DatagramPacket responsePacket = new DatagramPacket(new byte[4096], 4096);
            socket.receive(responsePacket);
            String response = new String(responsePacket.getData(), 0, responsePacket.getLength());
// 4. 把响应打印到控制台上.
            System.out.println(response);
        }
    }

    public static void main(String[] args) throws IOException {
        UdpEchoClient client = new UdpEchoClient("47.108.28.88", 9090);
        client.start();
    }
}


/**
 * 题目： 字符串替换
 *
 * 1. 模拟
 * 2. 注意 %s 之外的情况 %d %c 的特殊情况
 *
 *
 */


 class StringFormat {
    public String formatString(String str, int n, char[] arg, int m) {
        // 存储结果
        StringBuilder ret = new StringBuilder();
        int j = 0;


        for (int i = 0 ; i < str.length(); i++) {
            char ch = str.charAt(i);
            // 进行判断该位置是否需要添加
            if (ch == '%' ) {
                i++;
                // 占位符替换
                if (str.charAt(i) == 's') {
                    ret.append(arg[j++]);
                }
            } else {
                // 连接当前字符
                ret.append(ch);
            }
        }

        // 连接最后的字符
        for (; j < arg.length; j++) {
            ret.append(arg[j]);
        }

        return ret.toString();

    }
}


/**
 * 神奇数
 *
 *
 * 1. 遍历每个数字
 * 2. 把每个数字拆分出来，然后放在数组中整合累加进行判读
 * 3. 注意特殊 首位不为 0 ，并且这个数不重复
 */


 class Main  {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        // 输入
        int a = in.nextInt();
        int b = in.nextInt();

        // 整合
        int[] dp = new int[10];

        int ret= 0;
        for (int i = a; i <= b; i++) {

            int tmp = i;
            int pos = 0;

            // 抽出每个数字放在数组中
            while (tmp != 0) {
                dp[pos++] = tmp % 10;
                tmp /= 10;
            }


            for (int j = 0 ; j < pos; j++) {

                // 启标准作用
                boolean flg = false;
                for (int k = 0; k < pos ; k++) {

                    // 首位不为 0 并且这个数不重复
                    if(dp[j] != 0 &&  j != k) {
                        if(func(dp[j] * 10 + dp[k])) {
                            ret++;
                            flg = true;
                            break;
                        }
                    }
                }

//                一旦找到跳出外层循环
                if(flg) {
                    break;
                }
            }

        }


        // 输出
        System.out.println(ret);

    }


    // 检查素数
    public static boolean func(int num) {
        for(int i = 2; i<= Math.sqrt(num); i++) {
            if(num % i ==0) {
                return false;
            }
        }


        return true;
    }
}





 class Main2 {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        long[] nums = new long[n*3];

        // 输入
        for(int i=0; i< n*3; i++) {
            nums[i] = in.nextInt();
        }


        // 排序
        Arrays.sort(nums);

        // 抽取总和
        long ret = 0;

        int pos = 3*n -2;
        // 开始查找并遍历
        while(n-- != 0) {
            // 根据规律加上
            ret += nums[pos];
            // 向前走两位
            pos -= 2;

        }

        // 最后输出
        System.out.println(ret);
    }
}


/**
 * 题目： 平方数
 *
 * 1. 给这个数开方
 * 2. 进行强转long
 * 3. 再进行 +1
 * 4. 判断差值更小  离谁更近
 */


 class Main5 {
    public static void main(String[] args) {
        // 输入
        Scanner in = new Scanner(System.in);
        long num = in.nextLong();



//        得到该数
        double n = Math.sqrt(num);



        long left = (long)n;
        long right = left + 1;


//         取出较小值
        if((num -left*left) <= (right*right - num)) {
            System.out.println(left * left);
        } else {
            System.out.println(right * right);
        }

    }
}